In a multiprocessor information handling system, each processor may have its own independent clock, where each clock is driven by a different oscillator. Although the clocks are designed to run at a specific rate, each may run at a slightly different speed. In addition, external factors, such as room temperature, may affect the accuracy of the oscillators. Therefore, the clocks tend to "drift." In other words, the clocks are running at different and uneven speeds. Over a period of time, such drifts can become large enough to cause problems for applications that depend on consistent clock readings for all processors in the system.
There are many circumstances where processor clocks must be synchronized to perform certain system functions. One example is the sharing of performance information among the multiple processors in the information handling system.
Typically, there is no means provided at the hardware level of an information handling system to provide for clock synchronization. Therefore, the operating system must provide for synchronization for its own processes. In addition to synchronizing the various processor clocks in the system, any clock readings taken must be "normalized," or adjusted, to account for the clock drift problem discussed above.
One prior art synchronization method involves the generation of a general system clock. Although a general system clock may be adequate for limited applications in the information handling system, it is not adequate for performance measurement purposes. For example, the system clock does not provide sufficient granularity for small (subcycle) variations between processors in the system. Further, the system clock requires a considerable amount of system resources which would adversely affect performance of the system if the system clock were continually referred to during performance measurement. This would further skew the performance results.
Some prior art approaches have attempted to solve the clock drift problem at the hardware level. For example, temperature data may be fed back to an oscillator, so that the oscillator can adjust its frequency to reduce or remove variations due to temperature.
Other prior art approaches have focused on clock synchronization in distributed systems, such as networks. Communications among computers connected by networks typically takes much longer than communications among tightly coupled processors in a multiprocessor system. Therefore, the accuracy requirement for clock synchronization in a distributed system is significantly less than the accuracy requirement for a multiprocessor system. The prior art synchronization methods used in distributed systems would not work with the required degree of accuracy for a multiprocessor system, especially if the multiprocessor system is a tightly couple, symmetrical, shared-memory multiprocessor system.
Consequently, it would be desirable to have a system and method of accurately and efficiently synchronizing and then mapping, or normalizing, processor clocks in a multiprocessor information handling system. It would be desirable to have a system and method which provide sufficient granularity for subcycle variations between processors, while taking into account the problem of clock drifts.